package com.fwmagic.spark.ml

import org.apache.spark.ml.linalg.{Matrices, Matrix}

object MatrixDemo {
  def main(args: Array[String]): Unit = {
    // 创建一个3行2列的稠密矩阵[ [1.0,2.0], [3.0,4.0], [5.0,6.0] ]
    // 请注意，这里的数组参数是列先序的！
    val matrix: Matrix = Matrices.dense(3, 2, Array(1.0, 3.0, 5.0, 2.0, 4.0, 6.0))
    println(matrix)

    println("==========")
    // 创建一个3行2列的稀疏矩阵[ [9.0,0.0], [0.0,8.0], [0.0,6.0]]
    // 第一个数组参数表示列指针，即每一列元素的开始索引值
    // 第二个数组参数表示行索引，即对应的元素是属于哪一行
    // 第三个数组即是按列先序排列的所有非零元素，通过列指针和行索引即可判断每个元素所在的位置
    val matrix1: Matrix = Matrices.sparse(3, 2, Array(0, 1, 3), Array(0, 2, 1), Array(9, 6, 8))
    println(matrix1)
  }

}
